#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N = 2e5 + 10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
int n;
void solve()
{
    priority_queue<ll> q;

    cin >> n;

    ll ans = 0;
    for(int i = 1; i <= n; i++)
    {
        ll x;
        cin >> x;
        if(x == 0)
        {
            if(!q.empty())
            {
            	ll t=q.top();
                ans += t;
                q.pop();
            }
        }
        else q.push(x);
    }

    cout << ans << '\n';

}

int main()
{
    close();
    int T;
    cin >> T;
    while (T--) solve();
    return 0;
}
//英雄牌为0威力


//操作
//从牌堆顶端取一张牌;

//如果这张卡是奖励卡，你可以把它放在你的奖励卡组顶部或丢弃;

//如果这张牌是英雄牌，那么你的奖励牌组中最上面那张牌的能量会被加到他的能量中(如果它不是空的)，
//之后英雄会被加到你的军队中，使用的奖励会被丢弃。


//你的任务是使用这些行动聚集一支军队与最大可能的总力量。

//遇0找mx